package com.punch.course.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.punch.common.dto.course.CourseAuditDTO;
import com.punch.common.dto.course.CourseDTO;
import com.punch.common.page.PageInfo;
import com.punch.common.vo.course.*;
import com.punch.common.vo.course.report.OrganReportVO;
import com.punch.common.vo.course.report.CourseReportVO;
import com.punch.course.model.PunchCourse;
import com.punch.course.query.CourseQueryInfo;

import java.util.List;

/**
 * CourseService-课程信息 服务类
 *
 * @author xiaol
 * @version 1.0.0
 * @since 2020/7/14 10:51
 */
@Deprecated
public interface CourseService extends IService<PunchCourse> {
    /**
     * 条件分页查询课程列表
     *
     * @return 课程信息
     */
    PageInfo<CoursePageVO> listCourse(CourseQueryInfo queryInfo);

    /**
     * 查询课程详情
     *
     * @param courseId 课程id
     * @return 课程详情
     */
    CourseVO getCourseById(Long courseId);

    /**
     * 新增课程信息
     *
     * @param courseForm 表单数据
     * @return 新增课程记录id
     */
    Long saveCourse(CourseDTO courseForm);

    /**
     * 编辑课程信息
     *
     * @param courseForm 表单数据
     * @return 编辑课程记录id
     */
    Long updateCourse(CourseDTO courseForm);

    /**
     * 删除课程信息
     *
     * @param courseId 课程id
     */
    void deleteCourseById(Long courseId);


    /**
     * 课程下拉列表--只找课程库里面的课程
     *
     * @param courseName 课程名称
     * @return List<SimpleCourseVO> 课程下拉列表
     */
    List<SimpleCourseVO> listCourseSelect(String courseName, Long courseId);

    /**
     * 课程启用/停用
     *
     * @param courseId 课程id
     */
    void enableCourse(Long courseId);

    /**
     * 课程审核
     *
     * @param courseAuditDTO 课程审批表单
     */
    void auditCourse(CourseAuditDTO courseAuditDTO);


    /**
     * 条件分页查询课程库
     *
     * @return 课程信息
     */
    PageInfo<CoursePageVO> listCourseLibrary(CourseQueryInfo queryInfo);


    /**
     * 课程类型统计
     *
     * @return
     */
    List<CoursePieReportVO> courseReport();

    /**
     * 获取课程审核失败原因
     *
     * @param courseId 课程id
     * @return string
     */
    String getCourseAuditMessage(Long courseId);

    /**
     * 根据学校id查询对应的入驻机构数量
     *
     * @param schoolId
     * @return
     */
    List<OrganReportVO> getOrganCount(Long schoolId);

    /**
     * 根据创建人id（学校id）查询对应的开课数量
     *
     * @param createId
     * @return
     */
    List<CourseReportVO> getCourseCount(Long createId);

    /**
     * 课程课节列表
     *
     * @param courseId 课程id
     * @return List<CourseContentVO>
     */
    List<CourseContentVO> listCourseLessons(Long courseId);

    /**
     * 根据课程类型名称获取学校开课详情列表
     *
     * @param categoryName 课程id
     * @return List<ClassesVO>
     */
    List<ClassesVO> coursesDetailReport(String categoryName);
}
